]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extension-tool/install: Add --print-uuid option
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 27 Nov 2025 17:30:26 +0000 (18:30 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 27 Nov 2025 18:24:01 +0000 (19:24 +0100)
This is meant to help with automation, where some follow-up actions
are needed after installing an arbitrary extension, like

```sh
$ uuid=$(gnome-extensions install --print-uuid extension.zip)
$ gsettings set org.gnome.shell enabled-extensions [\'$uuid\']
```

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

subprojects/extensions-tool/src/command-install.c

index 11fb4b6b723f4abd76e9f70e473f45834b794db5..24d09febb26a319e47d5dfd3c399a65b9c4d9de7 100644 (file)
@@ -86,7 +86,8 @@ on_decide_destination (AutoarExtractor *extractor,
 
 static int
 install_extension (const char *bundle,
-                   gboolean    force)
+                   gboolean    force,
+                   gboolean    print_uuid)
 {
   g_autoptr (AutoarExtractor) extractor = NULL;
   g_autoptr (JsonObject) metadata = NULL;
@@ -165,6 +166,9 @@ install_extension (const char *bundle,
         goto err;
     }
 
+  if (print_uuid)
+    g_print ("%s\n", uuid);
+
   return 0;
 
 err:
@@ -184,10 +188,14 @@ handle_install (int argc, char *argv[], gboolean do_help)
   g_autoptr (GError) error = NULL;
   g_auto (GStrv) filenames = NULL;
   gboolean force = FALSE;
+  gboolean print_uuid = FALSE;
   GOptionEntry entries[] = {
     { .long_name = "force", .short_name = 'f',
       .arg = G_OPTION_ARG_NONE, .arg_data = &force,
       .description = _("Overwrite an existing extension") },
+    { .long_name = "print-uuid",
+      .arg = G_OPTION_ARG_NONE, .arg_data = &print_uuid,
+      .description = _("Print extension UUID on success") },
     { .long_name = G_OPTION_REMAINING,
       .arg_description =_("EXTENSION_BUNDLE"),
       .arg = G_OPTION_ARG_FILENAME_ARRAY, .arg_data = &filenames },
@@ -226,5 +234,5 @@ handle_install (int argc, char *argv[], gboolean do_help)
       return 1;
     }
 
-  return install_extension (*filenames, force);
+  return install_extension (*filenames, force, print_uuid);
 }